﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades;
using System.Data.SqlClient;

namespace DAO
{
    public static class PagoDAO
    {
        public static void generarPago(Cuota cuo)
        {
            SqlConnection con = DB.conexion();
            SqlTransaction tran = con.BeginTransaction();
            try
            {
                string query = "INSERT INTO Pago pag_fecha VALUES GETDATE(); SELECT MAX(cuo_id) FROM Pago;";
                SqlCommand cmd = new SqlCommand(query, con, tran);
                cmd.Parameters.Add(new SqlParameter("@cuo_soc_id", cuo.Socio.Id));
                cuo.Id = (int)cmd.ExecuteScalar();
                foreach (DetalleCuota dc in cuo.Detalle)
                {
                    query = "INSERT INTO DetallePago (dec_cuo_id, dec_cla_id, dec_fecha_inicio, dec_precio, dec_fecha_fin, dec_observaciones, dec_descuento) VALUES (@dec_cuo_id,@dec_cla_id, @dec_fecha_inicio, @dec_precio, @dec_fecha_fin, @dec_observaciones, @dec_descuento);";
                    cmd = new SqlCommand(query, con, tran);
                    cmd.Parameters.Add(new SqlParameter("@dec_cuo_id", cuo.Id));
                    cmd.Parameters.Add(new SqlParameter("@dec_cla_id", dc.Clase.Id));
                    cmd.Parameters.Add(new SqlParameter("@dec_fecha_inicio", dc.FechaInicio));
                    cmd.Parameters.Add(new SqlParameter("@dec_precio", dc.Precio));
                    cmd.Parameters.Add(new SqlParameter("@dec_fecha_fin", dc.FechaFin));
                    cmd.Parameters.Add(new SqlParameter("@dec_observaciones", dc.Observaciones));
                    cmd.Parameters.Add(new SqlParameter("@dec_descuento", dc.Descuento));
                    cmd.ExecuteNonQuery();
                }
                tran.Commit();
            }
            
            catch (SystemException)
            {
                tran.Rollback();
            }
            finally
            {
                con.Close();
            }
        }
    }
}
